﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Comun;

namespace DalcProFacu
{
    public class Turno
    {
        Conexion conn = null;

        public Turno(Conexion con)
        {
            conn = con;
        }

        public DataSet GetTurnos(string sEspecialidad, string sProfesiona)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Ds;

            sSql.Append(" SELECT T.IDTURNO, T.FECHA, T.HORA, T.IDPROFESIONAL, ");
            sSql.Append(" PR.IDPERSONAL, P.APELLIDO + ' ' + P.NOMBRE PROFESIONAL, T.IDESPECIALIDAD, ");
            sSql.Append(" E.DESCRIPCION ESPECIALIDAD ");
            sSql.Append(" FROM SAHC_TURNO T ");
            sSql.Append(" INNER JOIN SAHC_PROFESIONAL PR ON PR.IDPROFESIONAL = T.IDPROFESIONAL ");
            sSql.Append(" INNER JOIN SAHC_PERSONAL P ON P.IDPERSONA = PR.IDPERSONAL ");
            sSql.Append(" INNER JOIN SAHC_ESPECIALIDAD E ON E.IDESPECIALIDAD = T.IDESPECIALIDAD ");

            sSql.Append(" WHERE ASISTENCIA = 6 AND T.IDPACIENTE IS NULL");
            if(sEspecialidad != "")
            {
                sSql.Append(string.Format(" AND T.IDESPECIALIDAD = {0} ", sEspecialidad));
            }

            if(sProfesiona != "")
            {
                sSql.Append(string.Format(" AND T.IDPROFESIONAL = {0} ", sProfesiona));
            }

            Ds = conn.EjecutarQuery(sSql.ToString(), "TURNOS");

            //this.Errores = conn.Errores;
            return Ds;
        }

        public int ReservarTurno(string sNroDoc)
        {
            ////StringBuilder sSql = new StringBuilder();

            int fila = 0;

            //DataSet Dt = new DataSet();

            //sSql.Append(string.Format(" SELECT IDPACIENTE FROM SAHC_PACIENTE WHERE NRODOC = '{0}'", sNroDoc));

            //Dt = conn.EjecutarQuery(sSql.ToString(), "IDPAC");

            //sSql.Append(string.Format("UPDATE  SAHC_TURNO SET ASISTENCIA = 1 WHERE IDPACIENTE = {0}"));

            ////sSql.Append("  ");
            ////sSql.Append(string.Format(" WHERE TBNUME = '{0}' ", sCampo1));

            //fila = conn.EjecutarQuery(sSql.ToString());

            ////this.Errores = conn.Errores;
            return fila;
        }

        public DataSet GetTurnosPaciente(string sNroDoc)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Ds;

            sSql.Append(" SELECT T.IDTURNO, T.FECHA, T.HORA, T.IDPROFESIONAL, ");
            sSql.Append(" PR.IDPERSONAL, P.APELLIDO + ' ' + P.NOMBRE PROFESIONAL, ");
            sSql.Append(" T.IDESPECIALIDAD,  E.DESCRIPCION ESPECIALIDAD, T.IDPACIENTE, ");
            sSql.Append(" PA.APELLIDO + ' ' + PA.NOMBRE PACIENTE ");
            sSql.Append(" FROM SAHC_TURNO T ");
            sSql.Append(" INNER JOIN SAHC_PROFESIONAL PR ON PR.IDPROFESIONAL = T.IDPROFESIONAL ");
            sSql.Append(" INNER JOIN SAHC_PERSONAL P ON P.IDPERSONA = PR.IDPERSONAL ");
            sSql.Append(" INNER JOIN SAHC_ESPECIALIDAD E ON E.IDESPECIALIDAD = T.IDESPECIALIDAD ");
            sSql.Append(" INNER JOIN SAHC_PACIENTE PA ON PA.IDPACIENTE = T.IDPACIENTE ");
            sSql.Append(string.Format(" WHERE ASISTENCIA = 1 AND PA.NRODOC = '{0}' ", sNroDoc));

            Ds = conn.EjecutarQuery(sSql.ToString(), "TURNOSC");

            //this.Errores = conn.Errores;
            return Ds;
        }

        public DataSet GetTurnosAsigandos(string sParam)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Ds;

            sSql.Append(" SELECT T.IDTURNO, T.FECHA, T.HORA, T.IDPROFESIONAL,  ");
            sSql.Append(" PR.IDPERSONAL, P.APELLIDO + ' ' + P.NOMBRE PROFESIONAL, ");
            sSql.Append(" T.IDESPECIALIDAD,  E.DESCRIPCION ESPECIALIDAD, T.IDPACIENTE, ");
            sSql.Append(" PA.APELLIDO + ' ' + PA.NOMBRE PACIENTE ");
            sSql.Append(" FROM SAHC_TURNO T  ");
            sSql.Append(" INNER JOIN SAHC_PROFESIONAL PR ON PR.IDPROFESIONAL = T.IDPROFESIONAL  ");
            sSql.Append(" INNER JOIN SAHC_PERSONAL P ON P.IDPERSONA = PR.IDPERSONAL  ");
            sSql.Append(" INNER JOIN SAHC_ESPECIALIDAD E ON E.IDESPECIALIDAD = T.IDESPECIALIDAD");
            sSql.Append(" INNER JOIN SAHC_PACIENTE PA ON PA.IDPACIENTE = T.IDPACIENTE ");
            sSql.Append(" WHERE ASISTENCIA = 1 ");

            if(sParam != "")
            {
                sSql.Append(string.Format(" AND PA.NRODOC = '{0}'", sParam));
            }

            Ds = conn.EjecutarQuery(sSql.ToString(), "TURNOSC");

            //this.Errores = conn.Errores;
            return Ds;
        }

        public int ConfirmarTurno(string sIdTurno)
        {
            StringBuilder sSql = new StringBuilder();
            int fila;

            sSql.Append(" UPDATE SAHC_TURNO SET ASISTENCIA = 2 ");
            sSql.Append(string.Format(" WHERE IDTURNO = {0} ", sIdTurno));

            fila = conn.EjecutarQuery(sSql.ToString());

            //this.Errores = conn.Errores;
            return fila;
        }

        public int CancelarTurno(string sIdTurno)
        {
            StringBuilder sSql = new StringBuilder();
            int fila;

            sSql.Append(" UPDATE SAHC_TURNO SET ASISTENCIA = 3 ");
            sSql.Append(string.Format(" WHERE IDTURNO = {0} ", sIdTurno));

            fila = conn.EjecutarQuery(sSql.ToString());

            //this.Errores = conn.Errores;
            return fila;
        }

        public int EliminarTurnosOtorgados(string sIdEspecialidad)
        {
            StringBuilder sSql = new StringBuilder();
            int fila;

            sSql.Append(" DELETE FROM SAHC_TURNO ");
            sSql.Append(" WHERE IDPROFESIONAL IN (SELECT PR.IDPROFESIONAL FROM SAHC_PROFESIONAL PR ");
            sSql.Append(string.Format(" WHERE PR.IDESPECIALIDAD = {0} ", sIdEspecialidad));

            fila = conn.EjecutarQuery(sSql.ToString());

            //this.Errores = conn.Errores;
            return fila;
        }

        public DataSet GetTurnosActivos(string sIdEspecialidad)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Ds;

            sSql.Append(" SELECT COUNT(T.idTurno) FROM SAHC_TURNO T ");
            sSql.Append(" INNER JOIN SAHC_PROFESIONAL PR ON PR.IDPROFESIONAL = T.IDPROFESIONAL ");
            sSql.Append(string.Format(" WHERE T.idEspecialidad = {0} AND T.asistencia IN (1,2) ", sIdEspecialidad));
 
            Ds = conn.EjecutarQuery(sSql.ToString(), "TURNOS");

            //this.Errores = conn.Errores;
            return Ds;
        }
    }
}
